/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gerenciadorescola.controller.pattern.command;

import gerenciadorescola.model.Escola;
import gerenciadorescola.model.Professor;
import gerenciadorescola.model.Turma;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Pedro Freitas
 */
public class ComandoBuscaProfessor implements Command{

    public Map execute(Map<String, String> entrada) {
    Map<String, String> saida = new HashMap();

        if (buscaProfessor(entrada) != null) {
            Map<Integer, Professor> p = buscaProfessor(entrada);

            saida.put("nome", p.get(0).getNome());
            saida.put("cpf", p.get(0).getCpf());
            saida.put("tel", p.get(0).getTelefone());
            saida.put("end", p.get(0).getEndereco());
            saida.put("sexo", p.get(0).getSexo());
            saida.put("disciplina", p.get(0).getDisciplina());
            saida.put("idade", String.valueOf(p.get(0).getIdade()));
            saida.put("salario",p.get(0).getSalario());
        } else {
            saida.put("msg", "O professor não pode ser encontrado!");
        }

        return saida;
    
    }
    
    
    public Map<Integer, Professor> buscaProfessor(Map<String, String> entrada) {

        Escola escola = Escola.getInstance();
        Map<Integer, Turma> t = buscaTurma(entrada);

        Map<Integer, Professor> professores = t.get(0).getProfessores();

        if (buscaTurma(entrada) != null) {
            int codigo = Integer.parseInt(entrada.get("codigo"));

            for (Map.Entry<Integer, Professor> p : professores.entrySet()) {
                if (codigo == p.getKey()) {
                    professores = new HashMap();
                    professores.put(0, p.getValue());
                    return professores;
                }
            }
        }
    

        return null;


    }
    
    public Map<Integer, Turma> buscaTurma(Map<String, String> entrada) {
        Escola escola = Escola.getInstance();
        Map<Integer, Turma> turmas = escola.getTurmas();
        int codigo = Integer.parseInt(entrada.get("codTurma"));
        for (Map.Entry<Integer, Turma> t : turmas.entrySet()) {
            if (codigo == t.getKey()) {
                turmas = new HashMap();
                turmas.put(0, t.getValue());
                return turmas;
            }
        }

        return null;


    }
    
}
